#include <iostream>
#include <future>
#include <chrono>
#include <thread>
#include<memory>
int add(int a, int b)
{
    //std::cout<<"+"<<std::endl;
    return a+b;
}


int main()
{
    //std::packaged_task<int(int,int)> task(add);
    auto ptask = std::make_shared<std::packaged_task<int(int,int)>>(add);
    std::future<int> fu = ptask->get_future();
    //task(10,20);
    //package_task创建的对象直接充当函数放入async或者线程中使用
    std::thread thr([ptask](){
        (*ptask)(10,20);
    });

    int sum = fu.get();
    std::cout<<sum<<std::endl;
    thr.join();
    return 0;
}